iT邦幫忙

0

VScode 開發應用系統專案 (1) - 啟動Spring Boot Web專案

  • 分享至 

  • xImage
  •  

VScode 建置Spring Boot專案

我是從其他語言環境(AS400 Cobol)轉換到Java開發,經過一段端時間的學習經驗,分享從零開始以Spring Boot架構開發Java Web 應用程式專案的基礎與架構,給沒有Spring Boot開發經驗,但已經有程式語言基礎的人參考 (是不是Java不重要,主要是有程式語言邏輯經驗)。

在安啟動建置Spring Boot專案之前,確認完成安裝開發環境

** Java 17 & Maven 3.9.11

安裝參考: https://ithelp.ithome.com.tw/articles/10398261

** VsCode 程式編輯程式

安裝參考: https://ithelp.ithome.com.tw/articles/10398356

開始下載建置Spring Boot專案

  1. 啟動VScode,開啟指令面板Command Palette(Ctrl+Shift+P),輸入"Spring Initializr",選擇"Spring Initializr: Create a Maven Project...".

https://ithelp.ithome.com.tw/upload/images/20251105/20139477mD8sioxy2s.png

  1. 選擇Spring Boot 版本,配合JDK 17版本、選擇Spring Boot (目前最新版本 3.5.7)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477GS6jdXrKhi.png

  1. 選擇程式開發語言,Java

https://ithelp.ithome.com.tw/upload/images/20251105/20139477wdwckhiw8Q.png

  1. 變更預設的Group Id "com.sample" 為 "tw.lewishome" (通常使用公司名稱,名稱不影響專案)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477Q9M9j4Mind.png

  1. 變更預設Artifact Id "demo"為"webapp" (專案名稱,沒特別設定會是Web網站URL跟目錄)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477pGsXmEHo6H.png

  1. 專案包裝type為 "war"檔,(建議使用war,可以於Vscode直接執行,也可佈署到 WebServer執行)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477U181lAxf1A.png

  1. 選擇Java JDK 版本為 "17" (需要配合安裝的JDK以及Spring Boot版本)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477PIJ01D2fhq.png

  1. 選擇建置專案使用的套件Dependency (先不選,後續會依需求,加入Maven的Pom.xml來管理下載)

https://ithelp.ithome.com.tw/upload/images/20251105/20139477DcuKju1ftD.png

  1. 選擇專案建置目錄(C:\workspaces),VScode會於選擇目錄下,自動產生Artifact Id子目錄(本案例專案名稱webapp),若目錄不存在,可以按右鍵 "新增資料夾",選擇完成後,點選右下角 "Generate into folder"

https://ithelp.ithome.com.tw/upload/images/20251105/20139477dOvtbxWre3.png

  1. 完成以上建置後,VScod右下角顯示建置成功訊息,並請您點選 "Open"鍵開啟專案
    https://ithelp.ithome.com.tw/upload/images/20251105/20139477VNeADWys05.png

  2. 開啟專案後,開始進入專案程式開發畫面
    https://ithelp.ithome.com.tw/upload/images/20251105/201394773ahUl5KAA6.png


對 VScode 開發Spring Boot 專案的個人看法(心得)

剛開始個人以Eclipse開發Java專案(包含Spring Boot),但VScode不像其他IDE整合開發工具(eclipse / IntelliJ IDEA),將所有需要開發程式的工具整合在一起提供,而是基於文字編輯器上,外掛各種套件,例如Java套件(Java Extension)開發Java程式語言相關、Spring 套件(Spring Boot Tools Extension)開發Spring Boot相關工具等等,但終歸基本功能還是文件編輯器本色,所以依使用套件而其操作功能、設定有些差異。

點選以下三個點,可以顯示及選擇套件各套件支援的內容,依這裡建置的Spring Boot專案來說,他是基於MAVEN管理的JAVA PROJECT,並可執行於Server的專案,所以可以選擇打勾選擇開啟或關播其功能

https://ithelp.ithome.com.tw/upload/images/20251105/20139477TdLXNjs3Pe.png

EXPLORER視窗內容(點選三個點),會依安裝Extension有所不同:

  1. "Open Editors" 已於右側視窗已打開的文件檔案列表 (個人因不習慣,會關閉不使用)。
  2. "Folders" 是灰階不可以取消(關閉),因為VScode主要還是文字編輯器。
  3. "Outline" 是以樹狀結構顯示Pom.xml檔案的內容,(預設是關閉)。
  4. "Timeline" 是所選檔案的變更動作及時間,與版本控制相關(預設是關閉)。
  5. "Server" 是有安裝Server後,顯示可以直接佈署系統的WebServer及相關功能(預設是關閉)。
  6. "Java Projects" 是安裝了 Java開發套件後,管理Java程式相關功能(預設是開啟)。
  7. "Maven" 是Pom.xml內設定的Jar檔案位置 (通常 C:\users\xxx.m2\repository...)(個人因不習慣,會關閉不使用)

調整 VS code 功能(個人喜好)

1. 預設 Terminal 為 Power Shell,不習慣需要更改為 CMD.exe。

a. 按 F1 鍵,開啟Command Palette

https://ithelp.ithome.com.tw/upload/images/20251105/20139477tWk1Nv8lhQ.png

b. 輸入terminal select default,選擇Terminal: Select Default Profile

https://ithelp.ithome.com.tw/upload/images/20251105/20139477YwnjQoTa8N.png

c. 選擇 Command Prompt C:\Windows\System32\cmd.exe

https://ithelp.ithome.com.tw/upload/images/20251105/20139477lN2iJfYCI6.png

d. 重啟 VSCODE後再開啟 terminal 會是 CMD.exe

https://ithelp.ithome.com.tw/upload/images/20251105/2013947723H4DekNTO.png

  1. VSCODE預設的 Open File Tab 只有一行(不會自動換行)

a. 選擇 File -> Preferences -> settings

https://ithelp.ithome.com.tw/upload/images/20251105/20139477o1Wn9ELzJH.png

b. 搜尋(輸入) workbench.editor.wrapTabs後,勾選 Wrap Tabs

https://ithelp.ithome.com.tw/upload/images/20251105/20139477SkM8WvdxzX.png

c. Open File Tab會多行顯示結果如下

https://ithelp.ithome.com.tw/upload/images/20251105/20139477WEpjAWPXA8.png


2. Spring Boot Initializr自動產生的主要目錄、程式或檔案

因為是Java Project,所以EXPLORER視窗以展開"Java Projects" 項目使用

https://ithelp.ithome.com.tw/upload/images/20251105/20139477R2MCLPei4J.png

說明:

JAVA PROJECT/
├── webapp/  (project root 跟目錄)
│   ├── src/main/java/  (Maven Java 程式 root 跟目錄)
│   │   └── tw.lewishome.webapp/ (web Application 程式 root 跟目錄)
│   │      ├── ServletInitializer (部屬於web Server執行的預設Servlet)
│   │      └── WebappApplication (Java 指令執行的 Main method程式)
│   ├── src/main/resources/ (spring Boot 預設靜態資料)
│   │   ├── static/  ( css、js、img 等 html使用的靜態資料)
│   │   ├── templates/ ( 前端 html 程式)
│   │   └── application.properties (spring boot 啟動的參數)
│   ├── src/test/java/ (Maven Junit單元測試程式 Root 跟目錄
│   │   └── tw.lewishome.webapp/ (Maven web Application 單元測試程式 root 跟目錄)
│   │      └── WebappApplicationTests (預設 WebappApplication的單元測試程式)
....
└── pom.xml (maven 設定檔,於 project root跟目錄)

3. 自動產生的主要程式或檔案說明

  1. Pom.xml

Maven 專案的核心設定檔,它使用 XML 格式來描述專案的 專案物件模型 (Project Object Model),包含專案的各種資訊,如專案座標(groupId、artifactId、version)、依賴管理、構建配置 和其他專案相關的屬性。這個檔案讓 Maven 能夠自動化地構建、管理專案的依賴和執行構建過程。

在左邊 EXPLORER視窗,"WEBAPP"項目,於 "Pom.xml"檔案,點兩下Mouse左鍵開啟,或於 "JAVA PROJECTS"項目
展開"WEBAPP",再於 "Pom.xml"檔案,點兩下Mouse左鍵開啟。

https://ithelp.ithome.com.tw/upload/images/20251105/20139477fgGVPZp9ev.png

  1. WebappApplication.Java

WebappApplication 是 Spring Boot 應用程式的主要入口點。此程式以 Java Command 執行Spring boot 專案時,提供負責啟動應用程式的 main Method。
若佈署到 web Server時,將不會需要此 main Method作為應用程式的主要入口點。

cmd /C "C:\Users\lewis\.vscode\extensions\redhat.java-1.47.0-win32-x64\jre\21.0.8-win32-x86_64\bin\java.exe @C:\Users\lewis\AppData\Local\Temp\cp_6fswok5ty580n5svwxc12rqgh.argfile tw.lewishome.webapp.WebappApplication "
  1. ServletInitializer.Java

ServletInitializer 是 Spring Boot 應用程式的初始化,主要功能是為 Spring Boot 應用程式部屬到 Web Server時,負責初始化系統配置。

  1. application.properties

是 Spring Boot 應用程式的核心設定檔,它使用簡單的鍵值對 (key-value) 格式,每一行設定一個屬性,這裡設定跟執行環境無關的專案的各種配置。

注意spring boot對application.properties設計特性:

a. 執行環境相關的會以spring.profiles.active變數,尋找application-${spring.profiles.active}.properties覆蓋變數值或設定專屬環境變數。
b. Web server 通常另外設定system 變數,覆蓋此變數值 ,例如: spring.profiles.active=jboss ,應用系統需要application-jboss.properties配置
c. OS 環境變數也可以覆蓋此變數,但需要以底線取代 "." 例如 : spring_profiles_active=uat 

基本格式:

# Sprint Boot 會以spring.profiles.active變數,尋找application-${spring.profiles.active}.properties
# 以下是設定會自動找尋 application-dev.properties載入設定
# Web server 通常另外設定system 變數,覆蓋此變數值 ,例如: spring.profiles.active=jboss ,應用系統需要application-jboss.properties配置
# OS 環境變數也會覆蓋此變數,但需要以底線取代 "." 例如 : spring_profiles_active=uat 
spring.profiles.active=dev

#設定專案war檔案外部 External 靜態資源路徑
spring.web.resources.static-locations=classpath:/static/,file:/webappData

#設定Spring boot web service port 對Jboss/liberty等 web Server 無效。 
server.port=8080

下一篇預告:

VScode 開發應用系統專案(2) - 系統通用工具類程式

將提供於專案中各個模組重複使用的通用工具類別與方法:

  1. Aes256Utility.java (提供AES256 加密/解密)
  2. CommUtils.java (提供常用檢查、字串格式化左右補零、空白字串、切分、合併、遮罩)
  3. CookieUtils.java (提供設置、取得及刪除 Cookie 的靜態方法)
  4. DateUtils.java (提供多種日期格式轉換、日期運算、民國曆與西元曆互轉等功能)
  5. FileUtils.java (以靜態方法提供常用的檔案處理工具方法)
  6. KeyStoreUtils.java (提供操作 Java KeyStore的建立、讀取、修改密碼、儲存資料、查詢別名等功能)
  7. MailSenderUtils.java(提供可處理郵件主旨、內容、收件人、CC、BCC 及附件,並支援編碼格式等功能)
  8. NetUtils.java (提供各種與網路相關的輔助方法)
  9. PassayUtils.java (提供密碼驗證與密碼產生相關的工具方法)
  10. ReflectUtils.java (提供多種基於 Java Reflect機制,支援直接存取物件的私有或保護屬性、方法)
  11. RSAUtils.java (提供 RSA 公私鑰產生、加解密、金鑰存取等相關工具方法)
  12. SM3Utils.java (提供不依賴 BouncyCastle 的 SM3 雜湊方法(需 JDK 支援 sm3)
  13. TaiwanAddress.java (提供臺灣地址正規化與簡易檢核工具)
  14. TypeConvert.java (提供各種物件型別之間的轉換方法,包括基本型別、數字型別、字串、陣列、編碼轉換、半形全形字轉換及數字大寫中文轉換等)
  15. ZipUtils.java (提供單一檔案、多檔案、整個資料夾的壓縮與解壓縮,並保留目錄結構等功能)

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言